<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Fadd.Components</name>
    </assembly>
    <members>
        <member name="T:Fadd.Components.ComponentCreatedEventArgs">
            <summary>
            Event arguments used when a component have been created.
            </summary>
        </member>
        <member name="M:Fadd.Components.ComponentCreatedEventArgs.#ctor(System.Type,System.Object,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentCreatedEventArgs"/> class.
            </summary>
            <param name="interfaceType">Type that will be requested by users.</param>
            <param name="instance">Created component instance..</param>
            <param name="isNotSingleton">if set to <c>true</c> component is not a singleton.</param>
        </member>
        <member name="P:Fadd.Components.ComponentCreatedEventArgs.InterfaceType">
            <summary>
            Gets interface type.
            </summary>
        </member>
        <member name="P:Fadd.Components.ComponentCreatedEventArgs.Instance">
            <summary>
            Gets created instance.
            </summary>
        </member>
        <member name="P:Fadd.Components.ComponentCreatedEventArgs.IsNotSingleton">
            <summary>
            Gets if component is not a singleton.
            </summary>
            <remarks>
            <para>
            If true, a new instance is created each time the component is requested.
            </para>
            </remarks>
        </member>
        <member name="T:Fadd.Components.Parameter">
            <summary>
            A parameter to a constructor.
            </summary>
        </member>
        <member name="M:Fadd.Components.Parameter.#ctor(System.String,System.Object)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.Parameter"/> class.
            </summary>
            <param name="name">The name.</param>
            <param name="value">The value.</param>
        </member>
        <member name="P:Fadd.Components.Parameter.Name">
            <summary>
            Gets or sets name.
            </summary>
        </member>
        <member name="P:Fadd.Components.Parameter.Value">
            <summary>
            Gets or sets value.
            </summary>
        </member>
        <member name="T:Fadd.Components.ParameterRequestedEventArgs">
            <summary>
            A constructor parameter is missing and have been requested for a component.
            </summary>
        </member>
        <member name="M:Fadd.Components.ParameterRequestedEventArgs.#ctor(System.Type,System.Type,System.Type,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ParameterRequestedEventArgs"/> class.
            </summary>
            <param name="interfaceType">Type of the interface.</param>
            <param name="instanceType">Type of the instance.</param>
            <param name="parameterType">Type of the parameter.</param>
            <param name="parameterName">Name of the parameter.</param>
        </member>
        <member name="P:Fadd.Components.ParameterRequestedEventArgs.InterfaceType">
            <summary>
            Gets type used to access component.
            </summary>
        </member>
        <member name="P:Fadd.Components.ParameterRequestedEventArgs.InstanceType">
            <summary>
            Gets type being created.
            </summary>
        </member>
        <member name="P:Fadd.Components.ParameterRequestedEventArgs.ParameterType">
            <summary>
            Gets type of requested parameter.
            </summary>
        </member>
        <member name="P:Fadd.Components.ParameterRequestedEventArgs.ParameterName">
            <summary>
            Gets name of requested parameter
            </summary>
        </member>
        <member name="P:Fadd.Components.ParameterRequestedEventArgs.ParameterValue">
            <summary>
            Gets or sets parameter instance.
            </summary>
        </member>
        <member name="T:Fadd.Components.Remoting.MethodCall">
            <summary>
            Information about which method to invoke at the remote end.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.MethodCall.InterfaceType">
            <summary>
            Gets or sets class that the call was invoked in.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.MethodCall.MethodName">
            <summary>
            Gets or sets method to invoke.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.MethodCall.Arguments">
            <summary>
            Gets or sets method call arguments.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.MethodCall.RequestId">
            <summary>
            Gets or sets identifier of this request.
            </summary>
        </member>
        <member name="T:Fadd.Components.ComponentFoundEventArgs">
            <summary>
            Arguments used when <see cref="T:Fadd.Components.ComponentFinder"/> found a new component by watching 
            a directory.
            </summary>
        </member>
        <member name="M:Fadd.Components.ComponentFoundEventArgs.#ctor(Fadd.Components.Component)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentFoundEventArgs"/> class.
            </summary>
            <param name="component">Discovered component.</param>
        </member>
        <member name="P:Fadd.Components.ComponentFoundEventArgs.Component">
            <summary>
            Gets discovered component.
            </summary>
        </member>
        <member name="T:Fadd.Components.Remoting.RemotingChannel">
             <summary>
             Transports method invocations to a remote party.
             </summary>
             <remarks>
             <para>
             A RemotingChannel will transport method invocation requests from a client to server,
             where they are executed (and result is sent back).
             </para>
             <para>
             The channel is not fully built yet. Currently it only support methods without <c>ref</c> and <c>out</c> keywords.
             It supports return values as long as they can be serialized.
             </para>
             </remarks>
             <example>
             <code>
             <![CDATA[
             private void Remoting()
             {
             	// This is typically done in your server.
             	ComponentManager server = SetupServerRemoting();
            
             	// Typically done in your client applications.
             	ComponentManager client = SetupClientRemoting();
            
             	// Invoke a method in your client to get it executed in your server.
             	string myMessages = client.Get<IMessageManager>().GetMessages();
             }
            
             private ComponentManager SetupClientRemoting()
             {
             	// We'll create a new component manager for this example only.
             	// Normally you have already created a component manager in your system,
             	// which also is used for the remoting.
             	ComponentManager clientManager = new ComponentManager {Location = "Client"};
            
             	// Find all components in our current assembly. 
             	// ComponentManager will only add components with the correct RunAt property.
             	ComponentFinder finder = new ComponentFinder();
             	finder.Find(new List<Assembly>() { GetType().Assembly });
             	clientManager.Add(finder.Components);
            
             	// Define where we should connect
             	RemotingChannel client = new RemotingChannel(clientManager, false);
             	client.Start(new IPEndPoint(IPAddress.Loopback, 8334));
            
             	return clientManager;
             }
            
             private ComponentManager SetupServerRemoting()
             {
             	// We'll create a new component manager for this example only.
             	// Normally you have already created a component manager in your system,
             	// which also is used for the remoting.
             	ComponentManager manager = new ComponentManager { Location = "Server" };
            
             	// Find all components in our current assembly. 
             	// ComponentManager will only add components with the correct RunAt property.
             	ComponentFinder finder = new ComponentFinder();
             	finder.Find(new List<Assembly>() { GetType().Assembly });
             	manager.Add(finder.Components);
            
             	// Setup remoting, we should accept connections on port 8834.
             	RemotingChannel server = new RemotingChannel(_manager, true);
             	server.Start(new IPEndPoint(IPAddress.Loopback, 8334));
            
             	return manager;
             }
             ]]>
             </code>
             </example>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.#ctor(Fadd.Components.ComponentManager,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.Remoting.RemotingChannel"/> class.
            </summary>
            <param name="manager">Manager used to invoke commands (if server side).</param>
            <param name="actAsServer">channel is acting as a server if set to <c>true</c>.</param>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.Start(System.Net.IPEndPoint)">
            <summary>
            Start channel
            </summary>
            <param name="value">End point to connect to or listen on.</param>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.HandleReceive(System.Int32)">
            <summary>
            Handle received bytes.
            </summary>
            <param name="bytesRead">Number of bytes received</param>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.Stop">
            <summary>
            Stop the channel.
            </summary>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.InvokeMethod(System.Object)">
            <summary>
            Invoke a method at the remote end.
            </summary>
            <param name="state"></param>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.Send(System.Int32,System.Byte[])">
            <summary>
            Send buffer to remote end.
            </summary>
            <param name="functionId">Function to invoke</param>
            <param name="buffer">Buffer to send.</param>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.Invoke(System.Type,System.String,System.Object[])">
            <summary>
            Invoke a method at the other end.
            </summary>
            <param name="interfaceType">Component that the method exist in</param>
            <param name="methodName">Method to invoke</param>
            <param name="parameters">Method parameters</param>
            <exception cref="T:System.InvalidOperationException">Failed to get answer from the server.</exception>
        </member>
        <member name="M:Fadd.Components.Remoting.RemotingChannel.Serialize(System.Object)">
            <summary>
            Binary serialize an object and return a byte array
            </summary>
            <param name="message">Object to serialize</param>
            <returns>byte array with the serialized object</returns>
        </member>
        <member name="T:Fadd.Components.IComponentProvider">
            <summary>
            Provides components.
            </summary>
        </member>
        <member name="M:Fadd.Components.IComponentProvider.Get``1">
            <summary>
            Get a component.
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <returns>Component if registered, otherwise null.</returns>
            <remarks>
            Component will get created if needed.
            </remarks>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other, and therefore neither of them can be created.</exception>
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
            <exception cref="T:System.UnauthorizedAccessException">If component is internal but accessed from another assembly but it's own.</exception>
        </member>
        <member name="M:Fadd.Components.IComponentProvider.Contains(System.Type)">
            <summary>
            Checks if the specified component interface have been added.
            </summary>
            <param name="interfaceType"></param>
            <returns>true if found; otherwise false.</returns>
        </member>
        <member name="M:Fadd.Components.IComponentProvider.Get(System.Type)">
            <summary>
            Get a component.
            </summary>
            <returns>Component if registered, otherwise null.</returns>
            <remarks>
            Component will get created if needed.
            </remarks>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other, and therefore neither of them can be created.</exception>
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
            <exception cref="T:System.UnauthorizedAccessException">If component is internal but accessed from another assembly but it's own.</exception>
        </member>
        <member name="P:Fadd.Components.IComponentProvider.Location">
            <summary>
            Gets or sets where the component provider is running.
            </summary>
            <remarks>
            Used together with <see cref="P:Fadd.Components.Component.RunAt"/> and <see cref="P:Fadd.Components.ComponentAttribute.RunAt"/>
            to determine if the component should be added or not.
            </remarks>
        </member>
        <member name="T:Fadd.Components.ConstructorMismatchException">
            <summary>
            None of the constructors provided could be used.
            </summary>
        </member>
        <member name="M:Fadd.Components.ConstructorMismatchException.#ctor(System.Type)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ConstructorMismatchException"/> class.
            </summary>
            <param name="type">Type that no constructor was found for.</param>
        </member>
        <member name="M:Fadd.Components.ConstructorMismatchException.#ctor(System.Type,System.Collections.Generic.List{Fadd.Components.ConstructorParameters})">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ConstructorMismatchException"/> class.
            </summary>
            <param name="type">Type that no constructor was found for.</param>
            <param name="constructors">All scanned constructors.</param>
        </member>
        <member name="M:Fadd.Components.ConstructorMismatchException.#ctor(System.Type,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ConstructorMismatchException"/> class.
            </summary>
        </member>
        <member name="M:Fadd.Components.ConstructorMismatchException.Add(Fadd.Components.ConstructorParameters)">
            <summary>
            Adds the specified constructor.
            </summary>
            <param name="constructor">The constructor.</param>
        </member>
        <member name="P:Fadd.Components.ConstructorMismatchException.Message">
            <summary>
            Gets a message that describes the current exception.
            </summary>
            <value></value>
            <returns>
            The error message that explains the reason for the exception, or an empty string("").
            </returns>
        </member>
        <member name="T:Fadd.Components.ConstructorParameter">
            <summary>
            A constructor parameter.
            </summary>
        </member>
        <member name="P:Fadd.Components.ConstructorParameter.Name">
            <summary>
            Gets name of parameter.
            </summary>
        </member>
        <member name="P:Fadd.Components.ConstructorParameter.IsMissing">
            <summary>
            Gets whether the parameter is missing.
            </summary>
        </member>
        <member name="T:Fadd.Components.ConstructorParameters">
            <summary>
            All parameters for a constructor.
            </summary>
        </member>
        <member name="M:Fadd.Components.ConstructorParameters.Add(Fadd.Components.ConstructorParameter)">
            <summary>
            Add a constructor parameter.
            </summary>
            <param name="parameter"></param>
        </member>
        <member name="M:Fadd.Components.ConstructorParameters.GetEnumerator">
            <summary>
                                Returns an enumerator that iterates through the collection.
            </summary>
            <returns>
                                A <see cref="T:System.Collections.Generic.IEnumerator`1" /> that can be used to iterate through the collection.
            </returns>
            <filterpriority>1</filterpriority>
        </member>
        <member name="M:Fadd.Components.ConstructorParameters.ToString">
            <summary>
            Show parameters.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Fadd.Components.ConstructorParameters.System#Collections#IEnumerable#GetEnumerator">
            <summary>
                                Returns an enumerator that iterates through a collection.
            </summary>
            <returns>
                                An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.
            </returns>
            <filterpriority>2</filterpriority>
        </member>
        <member name="P:Fadd.Components.ConstructorParameters.TypeName">
            <summary>
            Gets or sets name of class that the constructor belongs to.
            </summary>
        </member>
        <member name="T:Fadd.Components.ComponentAttribute">
            <summary>
            Used to define components.
            </summary>
        </member>
        <member name="M:Fadd.Components.ComponentAttribute.#ctor(System.Type)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentAttribute"/> class.
            </summary>
            <param name="interfaceType">Interface that this component is an instance for.</param>
        </member>
        <member name="M:Fadd.Components.ComponentAttribute.#ctor(System.Type,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentAttribute"/> class.
            </summary>
            <param name="interfaceType">Interface that this component is an instance for.</param>
            <param name="version">Component version.</param>
        </member>
        <member name="M:Fadd.Components.ComponentAttribute.#ctor(System.Type,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentAttribute"/> class.
            </summary>
            <param name="interfaceType">Interface that this component is an instance for.</param>
            <param name="runAt">Where the component should be running.</param>
        </member>
        <member name="M:Fadd.Components.ComponentAttribute.#ctor(System.Type,System.Int32,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentAttribute"/> class.
            </summary>
            <param name="interfaceType">Interface that this component is an instance for.</param>
            <param name="version">Component version.</param>
            <param name="runAt">Where the component should be running.</param>
        </member>
        <member name="M:Fadd.Components.ComponentAttribute.#ctor(System.Type,System.Int32,System.String,Fadd.Components.ComponentFlags)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentAttribute"/> class.
            </summary>
            <param name="interfaceType">Interface that this component is an instance for.</param>
            <param name="version">Component version.</param>
            <param name="runAt">Where the component should be running.</param>
            <param name="flags">Flags specifying behavior.</param>
        </member>
        <member name="P:Fadd.Components.ComponentAttribute.RunAt">
            <summary>
            Gets or sets where component should be running.
            </summary>
            <remarks>
            Can be used to specify that this instance should only be added/created
            as a specific location (such as in a server or client).
            </remarks>
        </member>
        <member name="P:Fadd.Components.ComponentAttribute.Flags">
            <summary>
            Gets or sets component flags
            </summary>
        </member>
        <member name="P:Fadd.Components.ComponentAttribute.Version">
            <summary>
            Gets or sets version of the component.
            </summary>
            <remarks>
            Can be used to replace an earlier version of a component implementation
            with a later one.
            </remarks>
        </member>
        <member name="P:Fadd.Components.ComponentAttribute.InterfaceType">
            <summary>
            Gets or sets interface that this is an instance for.
            </summary>
        </member>
        <member name="T:Fadd.Components.Remoting.Request">
            <summary>
            Request sent from client to server.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.Request.Id">
            <summary>
            Gets or sets id of transaction.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.Request.Event">
            <summary>
            Gets or sets event triggered when reply arrives.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.Request.Result">
            <summary>
            Gets or sets result sent back by the server end.
            </summary>
        </member>
        <member name="T:Fadd.Components.Remoting.MethodCallReply">
            <summary>
            Reply to a <see cref="T:Fadd.Components.Remoting.MethodCall"/>
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.MethodCallReply.Result">
            <summary>
            Gets or sets result by method call.
            </summary>
        </member>
        <member name="P:Fadd.Components.Remoting.MethodCallReply.RequestId">
            <summary>
            Gets or sets request identifier.
            </summary>
        </member>
        <member name="T:Fadd.Components.LoadPermissionArgsEventArgs">
            <summary>
            Used to determine if a component can be loaded.
            </summary>
        </member>
        <member name="M:Fadd.Components.LoadPermissionArgsEventArgs.#ctor(Fadd.Components.Component)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.LoadPermissionArgsEventArgs"/> class.
            </summary>
            <param name="component">The component.</param>
        </member>
        <member name="P:Fadd.Components.LoadPermissionArgsEventArgs.Component">
            <summary>
            Gets Component that wants to be loaded.
            </summary>
        </member>
        <member name="P:Fadd.Components.LoadPermissionArgsEventArgs.CanLoad">
            <summary>
            Gets or sets if the component can be loaded.
            </summary>
        </member>
        <member name="T:Fadd.Components.ComponentFinder">
            <summary>
            Used to scan after components in assemblies.
            </summary>
            <example>
            <code>
            // Find all components that exist in different dlls.
            ComponentFinder finder = new ComponentFinder();
            finder.Find("C:\\myapp\\plugin*.dll");
            
            // and add them to our component manager.
            ComponentManager manager = new ComponentManager();
            manager.Add(finder.Components);
            </code>
            </example>
        </member>
        <member name="M:Fadd.Components.ComponentFinder.Find(System.Collections.Generic.List{System.Reflection.Assembly})">
            <summary>
            Add all components found in the specified assemblies.
            </summary>
            <param name="assemblies">A list of assemblies to search for components in.</param>
        </member>
        <member name="M:Fadd.Components.ComponentFinder.WatchDirectory(System.String,System.String)">
            <summary>
            Watch a directory for new DLLs.
            </summary>
            <param name="path">Directory to watch</param>
            <param name="filter">File mask in directory to watch</param>
            <exception cref="T:System.InvalidOperationException">Only one directory can be watched per ComponentFinder instance.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentFinder.Find(System.String)">
            <summary>
            Find components in the specified path.
            </summary>
            <param name="fullPath">Full path or just a directory where the DLLs are located.</param>
            <exception cref="T:System.Reflection.ReflectionTypeLoadException"></exception>
            <exception cref="T:System.TypeLoadException"></exception>
            <example>
            <code>
            // Find all components that exist in different dlls.
            ComponentFinder finder = new ComponentFinder();
            finder.Find("C:\\myapp\\plugin*.dll");
            
            // and add them to our component manager.
            ComponentManager manager = new ComponentManager();
            manager.Add(finder.Components);
            </code>
            </example>
        </member>
        <member name="M:Fadd.Components.ComponentFinder.ScanForFiles(System.String)">
            <summary>
            Find components in the specified path.
            </summary>
            <param name="fullPath">Full path or just a directory where the DLLs are located.</param>
            <exception cref="T:System.Reflection.ReflectionTypeLoadException"></exception>
            <exception cref="T:System.TypeLoadException"></exception>
            <example>
            <code>
            // Find all components that exist in different dlls.
            ComponentFinder finder = new ComponentFinder();
            finder.Find("C:\\myapp\\plugin*.dll");
            
            // and add them to our component manager.
            ComponentManager manager = new ComponentManager();
            manager.Add(finder.Components);
            </code>
            </example>
        </member>
        <member name="M:Fadd.Components.ComponentFinder.FindInternal(System.String)">
            <summary>
            Should be run from a separate application domain, to avoid all scanned assemblies being loaded 
            into into the current one.
            </summary>
            <param name="fullPath">Path and wild cards.</param>
            <exception cref="T:System.TypeLoadException"></exception>
        </member>
        <member name="P:Fadd.Components.ComponentFinder.Components">
            <summary>
            All found components.
            </summary>
        </member>
        <member name="E:Fadd.Components.ComponentFinder.ComponentFound">
            <summary>
            A new component have been discovered by the file system watcher.
            </summary>
        </member>
        <member name="T:Fadd.Components.CircularDependenciesException">
            <summary>
            Two components are dependent of each other and can therefore not be created.
            </summary>
        </member>
        <member name="M:Fadd.Components.CircularDependenciesException.#ctor(System.Collections.Generic.List{Fadd.Components.Component})">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.CircularDependenciesException"/> class.
            </summary>
            <param name="components">The components.</param>
        </member>
        <member name="P:Fadd.Components.CircularDependenciesException.Components">
            <summary>
            Gets dependency tree
            </summary>
        </member>
        <member name="T:Fadd.Components.ComponentMissingEventArgs">
            <summary>
            Used for the <see cref="E:Fadd.Components.ComponentManager.Missing"/> event.
            </summary>
        </member>
        <member name="M:Fadd.Components.ComponentMissingEventArgs.#ctor(System.Type)">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.ComponentCreatedEventArgs"/> class.
            </summary>
            <param name="interfaceType">Type that will be requested by users.</param>
        </member>
        <member name="P:Fadd.Components.ComponentMissingEventArgs.InterfaceType">
            <summary>
            Gets interface type.
            </summary>
        </member>
        <member name="P:Fadd.Components.ComponentMissingEventArgs.Instance">
            <summary>
            Gets or set created instance.
            </summary>
        </member>
        <member name="P:Fadd.Components.ComponentMissingEventArgs.IsNotSingleton">
            <summary>
            Gets or sets if a new instance should be created each time the component is requested.
            </summary>
        </member>
        <member name="T:Fadd.Components.ComponentFlags">
            <summary>
            
            </summary>
        </member>
        <member name="F:Fadd.Components.ComponentFlags.None">
            <summary>
            No flags was specified
            </summary>
        </member>
        <member name="F:Fadd.Components.ComponentFlags.NotSingleton">
            <summary>
            Component is a not a singleton.
            </summary>
            <remarks>
            Means that a new instance is returned each time the interface is requested.
            </remarks>
        </member>
        <member name="F:Fadd.Components.ComponentFlags.Internal">
            <summary>
            Can only be accessed from the same assembly that is was created from.
            </summary>
        </member>
        <member name="T:Fadd.Components.ComponentManager">
            <summary>
            Creates and supplies components. 
            </summary>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Get``1">
            <summary>
            Get a component.
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <returns>Component if registered, otherwise null.</returns>
            <remarks>
            Component will get created if needed.
            </remarks>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other, and therefore neither of them can be created.</exception>
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
            <exception cref="T:System.UnauthorizedAccessException">If component is internal but accessed from another assembly but it's own.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Contains(System.Type)">
            <summary>
            Checks if the specified component interface have been added.
            </summary>
            <param name="interfaceType"></param>
            <returns>true if found; otherwise false.</returns>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Get(System.Type)">
            <summary>
            Get a component.
            </summary>
            <returns>Component if registered, otherwise null.</returns>
            <remarks>
            Component will get created if needed.
            </remarks>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other, and therefore neither of them can be created.</exception>
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
            <exception cref="T:System.UnauthorizedAccessException">If component is internal but accessed from another assembly but it's own.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.VisitAll(Fadd.Components.Action{System.Type,System.Object})">
            <summary>
            Visit all components.
            </summary>
            <param name="handler"></param>
        </member>
        <member name="M:Fadd.Components.ComponentManager.AddParameters(System.Type,System.Object[])">
            <summary>
            Add custom constructor parameters for an instance type.
            </summary>
            <param name="instanceType">Instance type</param>
            <param name="parameters">Name, value, name, value</param>
            <exception cref="T:System.FormatException">Parameters should be pairs for name, value.</exception>
            <exception cref="T:System.InvalidOperationException">Component have not been registered yet.</exception>
            <example>
            <code>
            manager.AddParameters(typeof(MyComponent), "hostName", "www.gauffin.com", "port", 80);
            </code></example>
        </member>
        <member name="M:Fadd.Components.ComponentManager.AddInstance``1(System.Object)">
            <summary>
            Add a component instance
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <param name="instance">Instance to add</param>
            <exception cref="T:System.ArgumentNullException"><c>instance</c> is null.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.AddInstance``1(System.Object,Fadd.Components.ComponentFlags)">
            <summary>
            Add a component instance
            </summary>
            <typeparam name="T">Interface type</typeparam>
            <param name="instance">Instance to add</param>
            <param name="flags">Specifies component behaviour</param>
            <exception cref="T:System.ArgumentNullException"><c>instance</c> is null.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Add``2">
            <summary>
            Add a component.
            </summary>
            <typeparam name="InterfaceType">Type being requested.</typeparam>
            <typeparam name="InstanceType">Type being created.</typeparam>
            <exception cref="T:System.InvalidOperationException">Type have already been mapped.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Add``2(Fadd.Components.ComponentFlags)">
            <summary>
            Add a component.
            </summary>
            <typeparam name="InterfaceType">Type being requested.</typeparam>
            <typeparam name="InstanceType">Type being created.</typeparam>
            <exception cref="T:System.InvalidOperationException">Type have already been mapped.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Add``2(Fadd.Components.Parameter[])">
            <summary>
            Add a component.
            </summary>
            <typeparam name="InterfaceType">Type being requested.</typeparam>
            <typeparam name="InstanceType">Type being created.</typeparam>
            <exception cref="T:System.InvalidOperationException">Type have already been mapped.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Add``2(Fadd.Components.ComponentFlags,Fadd.Components.Parameter[])">
            <summary>
            Add a component.
            </summary>
            <typeparam name="InterfaceType">Type being requested.</typeparam>
            <typeparam name="InstanceType">Type being created.</typeparam>
            <exception cref="T:System.InvalidOperationException">Type have already been mapped.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Add(System.Collections.Generic.IEnumerable{Fadd.Components.Component})">
            <summary>
            Adds all specified components
            </summary>
            <param name="components">The components.</param>
            <exception cref="T:System.ArgumentNullException"><c>components</c> is null.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Add(Fadd.Components.Component)">
            <summary>
            Add a component.
            </summary>
            <param name="information">Information about the component.</param>
            <exception cref="T:System.InvalidOperationException">If a component with that interface have already been added.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">If interface type cannot be assigned from instance type.</exception>
            <exception cref="T:System.ArgumentException">Interface type must be public.</exception>
            <exception cref="T:System.ArgumentNullException"><c>information</c> is null.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.CreateAll">
            <summary>
            Create all objects.
            </summary>
            <remarks>
            Also singletons are created.
            this method is usually used to make sure that
            all dependencies is in place.
            </remarks>
        </member>
        <member name="M:Fadd.Components.ComponentManager.ValidateAll">
            <summary>
            Validate that all components can be created.
            </summary>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other (which means that neither of them can be created).</exception>
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.Create(Fadd.Components.Component)">
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.FindConstructor(Fadd.Components.Component)">
            <summary>
            Find the constructor.
            </summary>
            <param name="component">Component to create</param>
            <remarks>
            <para>
            Will create all components that this one is dependent of.
            </para>
            <para>
            Keeps track of dependencies to avoid circular ones.
            </para>
            </remarks>
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other, thus making it impossible to create either of them.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.FindConstructor(Fadd.Components.Component,System.Collections.Generic.List{Fadd.Components.Component})">
            <summary>
            Find the constructor.
            </summary>
            <param name="component">Component to create</param>
            <param name="dependencies">Linear dependency list</param>
            <remarks>
            <para>
            Will create all components that this one is dependent of.
            </para>
            <para>
            Keeps track of dependencies to avoid circular ones.
            </para>
            </remarks>
            <exception cref="T:Fadd.Components.ConstructorMismatchException">Failed to find a suitable constructor.</exception>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other, thus making it impossible to create either of them.</exception>
        </member>
        <member name="M:Fadd.Components.ComponentManager.CreateInstance(Fadd.Components.Component)">
            <summary>
            Creates a new instance.
            </summary>
            <param name="information">Component information.</param>
            <returns>Created component</returns>
            <remarks>
            Keeps track of all dependencies to make sure that there are no circular dependencies.
            </remarks>
            <exception cref="T:Fadd.Components.CircularDependenciesException">Two components are dependent of each other.</exception>
        </member>
        <member name="P:Fadd.Components.ComponentManager.Location">
            <summary>
            Gets or sets where the component provider is running.
            </summary>
            <remarks>
            Used together with <see cref="P:Fadd.Components.Component.RunAt"/> and <see cref="P:Fadd.Components.ComponentAttribute.RunAt"/>
            to determine if the component should be added or not.
            </remarks>
        </member>
        <member name="E:Fadd.Components.ComponentManager.Created">
            <summary>
            A component have been created.
            </summary>
            <remarks>
            The event is not called for internal components.
            </remarks>
        </member>
        <member name="E:Fadd.Components.ComponentManager.ParameterRequested">
            <summary>
            A parameter is missing for a component, this event will let you
            try to identify it.
            </summary>
        </member>
        <member name="E:Fadd.Components.ComponentManager.Missing">
            <summary>
            A component cannot be found.
            </summary>
            <remarks>
            Should be used to find components from somewhere else.
            </remarks>
        </member>
        <member name="T:Fadd.Components.Action`2">
            <summary>
            Generic action
            </summary>
            <typeparam name="T1"></typeparam>
            <typeparam name="T2"></typeparam>
            <param name="value1"></param>
            <param name="value2"></param>
        </member>
        <member name="T:Fadd.Components.Component">
            <summary>
            Contains information about a component.
            </summary>
        </member>
        <member name="M:Fadd.Components.Component.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Fadd.Components.Component"/> class.
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.InterfaceType">
            <summary>
            Gets or sets type that will be requested.
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.InstanceType">
            <summary>
            Gets or sets type that should be created.
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.Instance">
            <summary>
            Gets or sets created instance (if singleton)
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.Parameters">
            <summary>
            Gets or sets all constructor parameters needed to be able to create an instance of the type.
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.IsNotSingleton">
            <summary>
            Gets or sets if this component is a singleton.
            </summary>
            <remarks>
            <para>
            Default true.
            </para>
            <para>
            Singletons are created once and are returned each time
            the component is requested.
            </para>
            </remarks>
        </member>
        <member name="P:Fadd.Components.Component.Version">
            <summary>
            Gets or sets version of instance type.
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.RunAt">
            <summary>
            Gets or sets where the component should be running.
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.IsUsed">
            <summary>
            True if component have been used to create another one.
            </summary>
            <remarks>
            Needed when we have different versions of a component to make
            sure that no one is using the older version when replacing with the newer version.
            </remarks>
        </member>
        <member name="P:Fadd.Components.Component.KnownParameters">
            <summary>
            Gets all known parameters (usually parameters configured in a app.config or similar).
            </summary>
        </member>
        <member name="P:Fadd.Components.Component.IsInternal">
            <summary>
            Gets or sets whether this component only can get accessed from it's own assembly.
            </summary>
        </member>
        <member name="T:Fadd.Components.ConfigSectionHandler">
            <summary>
            Reads configuration from app.config.
            </summary>
        </member>
        <member name="M:Fadd.Components.ConfigSectionHandler.Create(System.Object,System.Object,System.Xml.XmlNode)">
            <summary>Creates a configuration section handler.</summary>
            <param name="parent">Parent object.</param>
            <param name="configContext">Configuration context object.</param>
            <param name="section">Section XML node.</param>
            <returns>The created section handler object.</returns>
            <exception cref="T:System.Configuration.ConfigurationErrorsException">If configuration is incorrect.</exception>
        </member>
        <member name="M:Fadd.Components.ConfigSectionHandler.GetAttribute(System.Xml.XmlNode,System.String,System.Boolean)">
            <summary>
            
            </summary>
            <param name="node"></param>
            <param name="attribute"></param>
            <param name="isMandatory"></param>
            <returns></returns>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><c>ConfigurationException</c>.</exception>
        </member>
        <member name="M:Fadd.Components.ConfigSectionHandler.GetParameterAttribute(System.Xml.XmlNode,System.String,System.Boolean)">
            <summary>
            
            </summary>
            <param name="node"></param>
            <param name="attribute"></param>
            <param name="isMandatory"></param>
            <returns></returns>
            <exception cref="T:System.Configuration.ConfigurationErrorsException"><c>ConfigurationException</c>.</exception>
        </member>
    </members>
</doc>
